<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /* 
         原型链
            当使用一个对象的属性或者方法的时候， 
                先在自身的内存中，如果有就使用。
                    如果没有就去，自己的原型中找(对象.__proto__),如果有就使用。
                    如果没有，原型也是一个对象，也有自己的原型，就去 原型的原型中 对象.__proto__.__proto__
                    依次类推,直到 Object.prototype的原型为止（再往里 就是null）,这个查找的链条 就原型链

            当使用一个对象的属性或者方法的时候， 
                先在自身的内存中，
                    如果没有就去，自己的原型中找(对象.__proto__),。
                    如果原型中页面没有，原型也是一个对象，也有自己的原型，就去 原型的原型中 对象.__proto__.__proto__
                    依次类推,直到 Object.prototype的原型为止（再往里 就是null）,这个查找的链条 就原型链

        */
        let arr = [];
        console.log(arr);
        console.log(arr.__proto__);//数组的原型中  Array.prototype
        console.log(arr.__proto__.__proto__);//数组的原型的原型中 -- Object.prototype
        console.log(arr.__proto__.__proto__.__proto__);//数组的原型的原型的原型中--null 结束了


        let str = ''
        console.log(str);
        console.log(str.__proto__);//字符串的原型中  Array.prototype
        console.log(str.__proto__.__proto__);//字符串的原型的原型中 -- Object.prototype
        console.log(str.__proto__.__proto__.__proto__);//字符串的原型的原型的原型中--null 结束了


        console.log(str.__proto__.__proto__ === arr.__proto__.__proto__);//true
        console.log(str.__proto__.__proto__ === Object.prototype);//true


        //判断对象是否有某一个属性（不包含方法）
        console.log(arr.hasOwnProperty('length'));
        console.log(arr.hasOwnProperty('aa'));
        console.log(arr.hasOwnProperty('push'));
        console.log(str.hasOwnProperty('length'));


        // instanceof

        // 判断一个对象是否某一个类的实例（如果类 处于 对象的原型链上）
        let str2 = new String()
        console.log(arr instanceof Array);
        console.log(arr instanceof Object);
        console.log(str2 instanceof Object);


        /*
            原型链--宝典文档---抄写两次
        */

    </script>

</body>

</html>